package com.collection;


import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;

public class CollectionToArrayDemo {
    public static void main(String[] args) {
        /**
         * 集合和数组的互转
         */

        Collection<String> list = new ArrayList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println("list = " + list);


        /**
         * 集合转数组(这里的list.size()是指定String的长度
         * 这里jdk做了适度调控，如果我的能用就用我的，我的不能用jdk就会自己创造一个,但是必要要有int数据)
         */
        String[] array = list.toArray(new String[list.size()]);

        //数组转字符串并打印
        System.out.println("array = " + Arrays.toString(array));


        /**
         * 数组转集合
         * 数组只能转list集合，不能转set集合因为可能会重复
         */
        String[] array1 = {"Apple", "Banana", "Cherry"};
        System.out.println("array1 = " + Arrays.toString(array1));

        List<String> list1 = Arrays.asList(array1);
        System.out.println("list1 = " + list1);

        /**
         * 这里操作了集合其实也是操作了数组，这里需要注意不能对集合进行增加元素，因为数组上面不允许，数组长度不够
         */
        list1.set(1,"six");
        System.out.println("list1 = " + list1);//list1 = [Apple, six, Cherry]
        //list1.add("five");  不能添加元素，操作了集合就是操作了数组，数组长度不够，会报错
        System.out.println("array1 = " + Arrays.toString(array1));//array1 = [Apple, six, Cherry]


        /**
         * 如果想增加元素，可以创建一个新的集合，然后增加元素
         */
        //这里相当于把list1的集合当作参数传递过来了，复制一个一样的集合
        List<String> objects = new ArrayList<>(list1);
        objects.add("five");
        System.out.println("objects = " + objects);


    }
}
